precision mediump float;

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;

void main() {
    // 将鼠标坐标映射到屏幕范围
    vec2 normalizedMouse = u_mouse / u_resolution;

    // 使用 fract 函数创建一个具有周期性效果的渐变背景
    vec3 background = vec3(fract(u_time), fract(u_time * 0.5), fract(u_time * 0.2));

    // 使用鼠标坐标和 sin 函数创建波纹效果
    float ripple = 0.5 + 0.5 * sin(length(normalizedMouse - 0.5) * 10.0);

    // 合并背景和波纹效果
    vec3 finalColor = mix(background, vec3(1.0, 0.0, 0.0), ripple);

    // 输出颜色
    gl_FragColor = vec4(finalColor, 1.0);
}
